1. Field of the Invention
The present invention relates to network systems, and more particularly, to routing frames.
2. Background of the Invention
Frames/packets carry network information that is exchanged between network nodes. The network system may be based on standard (or proprietary or a combination thereof) protocols, for example, Fibre Channel, Infiniband or any other standard. Typically, Fibre Channel networks use frames while Infiniband networks use packets.
InfiniBand (IB) is a switched fabric interconnect standard for servers, incorporated herein by reference in its entirety. IB technology is deployed for server clusters/enterprise data centers ranging from two to thousands of nodes. The IB standard is published by the InfiniBand Trade Association, and is incorporated herein by reference in its entirety.
Fibre Channel is a set of American National Standard Institute (ANSI) standards (incorporated herein by reference in their entirety), which provide a serial transmission protocol for storage and network protocols such as HIPPI, SCSI, IP, ATM and others. Fibre Channel provides an input/output interface to meet the requirements of both channel and network users.
Fibre Channel supports three different topologies: point-to-point, arbitrated loop and Fibre Channel fabric. The point-to-point topology attaches two devices directly. The arbitrated loop topology attaches devices in a loop. The Fibre Channel fabric topology attaches host systems directly to a fabric, which are then connected to multiple devices. The Fibre Channel fabric topology allows several media types to be interconnected.
A Fibre Channel (or IB) switch is typically a multi-port device where each port manages a point-to-point connection between itself and its attached system. Each port can be attached to a server, peripheral, I/O subsystem, bridge, hub, router, or even another switch. A switch receives messages from one port and routes it to another port.
Typically, when a switch receives a frame (for example, a Fibre Channel frame or an IB packet) at a receive port, it parses the frame and sends a tag to a transmit port so that the frame can be sent to its destination. The receive port is attached to a physical link which may be a copper or an optical link. The rates at which the physical link can receive or transmit data, hereafter, referred to as link-rate, vary from link to link. For example, link-rates may vary from 1 gigabits per second (may be referred to as “G”) (1 G), 2 G, 4 G, 8 G, 10 G or others.
In a Fibre Channel Fabric, plural Fibre Channel switches are connected via an Inter Switch Link (ISL). If an ISL transfers frames for multiple destinations, then the ISL may slow down to the speed of the slowest destination (or link). For example, a port operating at 4 G can only send a maximum of 1 G if the destination port is operating at 1 G, even though the ISL may be capable of operating at a higher rate, for example, 10 G. This may occur because frames to the 1 G destination arrive faster than they can be delivered, and the receive buffers on the ISL become full.
Multiple virtual lanes have been used to minimize the foregoing situation by dividing traffic on an ISL. Each virtual lane has separate flow control and uses flow control signals, for example, VC_RDY, a Fibre Channel primitive.
Receive buffers on the ISL are typically divided evenly between the virtual lanes. If traffic on one virtual lane slows, then the other virtual lanes can use the remaining bandwidth on the ISL.
Typically, a First-In-First-Out (FIFO) queue is maintained in every transmit port for each receive port. When a frame is received at the receive port it sends a tag to a transmit port. Each tag contains information about the virtual lane and the receive port number. The transmit port stores the tag information in the FIFO queue.
When an output link is available, the transmit port looks at the tag for virtual lane information. If flow control credit is available for the virtual lane, then it informs the receive port to send the frame. If flow control credit is not available for the virtual lane, then all the frames have to wait, even if there is flow control credit for other virtual lanes.
One solution would be to have a queue for every virtual lane from every receive port to every transmit port. But, this would be very expensive in hardware, because it will need more memory and logic. For example, a 16-port switch that supports 4 virtual lanes would need 64 queues for each transmit port i.e. 1024 queues.
The foregoing problem although described with respect to Fibre Channel networks may also occur in IB or other networks.
Therefore, better frame/packet routing techniques and system are needed.